{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "06ada95b",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import glob\n",
    "import os \n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from scipy.signal import find_peaks\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.ensemble import RandomForestRegressor\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.svm import SVR\n",
    "from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "691f4bdc",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Subject 1 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000   -0.005162           1\n",
      "1  0.010002    0.115503           1\n",
      "Subject 10 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000    0.004189          10\n",
      "1  0.010002    0.096108          10\n",
      "Subject 11 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000    0.001796          11\n",
      "1  0.010002    0.071022          11\n",
      "Subject 12 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000    0.004562          12\n",
      "1  0.010002    0.116440          12\n",
      "Subject 13 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000   -0.024996          13\n",
      "1  0.010002    0.117050          13\n",
      "Subject 14 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000   -0.006506          14\n",
      "1  0.010002    0.107230          14\n",
      "Subject 15 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000   -0.015861          15\n",
      "1  0.010002    0.115152          15\n",
      "Subject 16 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000    0.001874          16\n",
      "1  0.010002    0.102974          16\n",
      "Subject 17 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000   -0.003031          17\n",
      "1  0.010002    0.112598          17\n",
      "Subject 18 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000   -0.007638          18\n",
      "1  0.010002    0.081861          18\n",
      "Subject 19 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000   -0.016813          19\n",
      "1  0.010002    0.095730          19\n",
      "Subject 2 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000    0.000322           2\n",
      "1  0.010002    0.072274           2\n",
      "Subject 20 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000   -0.015288          20\n",
      "1  0.010002    0.082931          20\n",
      "Subject 3 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000   -0.017261           3\n",
      "1  0.010002    0.093773           3\n",
      "Subject 4 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000    0.001467           4\n",
      "1  0.010002    0.090642           4\n",
      "Subject 5 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000   -0.007629           5\n",
      "1  0.010002    0.133861           5\n",
      "Subject 6 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000   -0.004677           6\n",
      "1  0.010002    0.104327           6\n",
      "Subject 7 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000    0.001568           7\n",
      "1  0.010002    0.073632           7\n",
      "Subject 8 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000    0.006562           8\n",
      "1  0.010002    0.061537           8\n",
      "Subject 9 loaded\n",
      "       time  ppg_signal  subject_id\n",
      "0  0.000000   -0.016367           9\n",
      "1  0.010002    0.083359           9\n"
     ]
    }
   ],
   "source": [
    "# Load the master dataset\n",
    "master_data = pd.read_csv(r\"C:\\Users\\DELL\\Desktop\\vocational traning\\project 1\\master_data.csv\")\n",
    "\n",
    "\n",
    "subject_files = sorted(glob.glob(r'C:\\Users\\DELL\\Desktop\\vocational traning\\project 1\\subject_*.csv'))\n",
    "\n",
    "subject_dfs = []\n",
    "\n",
    "for file in subject_files:\n",
    "    df = pd.read_csv(file)\n",
    "    \n",
    "    subject_id = int(os.path.basename(file).split(\"_\")[1].split(\".\")[0]) #subject id extraction from file \n",
    "    \n",
    "    df['subject_id'] = subject_id  #this make sure thata sub id is present \n",
    "    subject_dfs.append(df)\n",
    "    print(f\"Subject {subject_id} loaded\")\n",
    "    print(df.head(2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "f8a2dcde",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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o48619x5551IpVJYvnw5brrpJsybNw+XXXYZLrroIt+yy+UyTjrpJHz729/GscceixtvvBF77LEHvvKVr2D58uXStUuXLsV3v/tdHH/88bjmmmuQSCRwwgknaMv+6Ec/ilwuh29961s466yzAAAPP/ww/vvf/2LZsmX47ne/i9NPPx333HMPjj/+eI+jBACnnXYaBgcHcfXVV+Pggw/GVVddhVWrVuGYY47B9OnTcc0112Du3Lm44IIL8MQTT1TU5Wc+8xlcdtllOOCAA/Dtb38bCxYswMqVK3H66ac719x111044ogjEIvFcNddd+Guu+7SphFaWlqQSCTwm9/8Blu3bq3IXw22bduG448/HvPmzcO1116LGTNm4HOf+xzuuOMO3/v++c9/4pBDDsG//vUvXHTRRbjhhhtQV1eHxYsX41e/+pVzXTabxRFHHIHvfve7+OAHP4ibbroJ55xzDl5++WVs2LAB7373u3HFFVcAAD772c9W1MWOxGuvvQYAaGpqquq63/zmN0gkEjjllFOGxT9r1iyUSiXcddddVd87ODiIE088ET/72c+wZMkSfPOb38SmTZuwZMkS5fWlUgmLFi1CU1MTrr/+eixYsAA33HADfvCDH0jX3XTTTdh///1xxRVX4Fvf+hYikQg++tGP4ne/+92QZDQwGFGUDd5xeOihh8rhcLgcDofLhx56aPmrX/1q+Y9//GO5v79fuu4///lPuaampnzyySeXS6WSdG5wcND5O5fLeTjOPvvscjKZLOfzeefYkiVLyrNmzXL277///jKA8lVXXSXd+5GPfKQcCoXKr776arlcLpfXrVtXBlD+4he/KF23dOnSMoDyihUrnGMrVqwoAyh//OMf99RJVc+f/exnZQDlJ554wlPGZz/7WedYsVgsz5gxoxwKhcpXX321c3zbtm3lRCJRXrJkiadsiueee64MoPyZz3xGOn7BBReUAZQfffRR59iSJUvKdXV1vuUJXHbZZWUA5bq6uvJxxx1X/uY3v1let26d57rVq1eXAZRff/116fhjjz1WBlB+7LHHnGMLFiwoAyjfcMMNzrFCoVDeb7/9yi0tLY6dvP7662UA5dWrVzvXfeADHyjvs88+UrsPDg6WDzvssPJuu+3mqfd9993nqauwrb/97W+e8oNiKPeKdn/llVfKW7ZsKb/++uvl73//++VYLFZubW0t9/b2lstlV5ePPPJIecuWLeW33nqrfM8995SbmprKiUSivGHDhnK5XC5PmjSpvN9++3l4uru7y1u2bHF+2WzWt17t7e3lKVOmlAGU99xzz/I555xTvvvuu8uZTMZzLe9jv/zlL8sAyqtWrXKOlUql8vvf/36PfpYsWVIGUL7iiiukMvfff//yvHnzpGO8L/X395f33nvv8vvf/37p+KxZsyr2DQODkYaJuLwDccwxx+Cpp57CSSedhOeffx7XXnstFi1ahOnTp0sh/fvvvx+Dg4O47LLLUFMjmwJdpEhz9D09Pejs7MQRRxyBXC6Hl19+WVuP3//+9wiHw/j85z8vHf/yl7+McrmMP/zhDwDgvB3zv//7v9J1fouIzznnHM8xWs98Po/Ozk4n/P7ss896rv/MZz7j/B0OhzF//nyUy2V8+tOfdo6n02nsscce+O9//6utC2DJCsATSfryl78MAEN+Ur388stx9913Y//998cf//hHXHrppZg3bx4OOOAA/Otf/xpSmQAQiURw9tlnO/u1tbU4++yzsXnzZqxbt055z9atW/Hoo4/iYx/7mGMHnZ2d6OrqwqJFi/Cf//wHb7/9NgDgl7/8Jfbdd1+cfPLJnnKobY0F9thjD0yZMgW77LILzj77bMydOxe/+93vnAW3AgsXLsSUKVMwc+ZMnH766UilUvjVr36F6dOnA7DWn4hFsxSf/OQnMWXKFOd34YUX+tantbUVzz//PM455xxs27YNt912G8444wy0tLTgyiuvVEYLBR588EFEo1En6ggANTU1OPfcc7X38L5zxBFHeOyb9qVt27Zh+/btOOKII5T9yMBgtGEcl3coDjzwQNx3333Ytm0bnnnmGVx88cXo6enBRz7yEbz00ksArNB3TU0N9tprL9+y/vnPf+Lkk09GY2MjGhoaMGXKFHziE58AAGzfvl173xtvvIFp06ahvr5eOv7ud7/bOS+2NTU12GWXXaTr5s6dqy2bXwtYE+sXvvAFtLa2IpFIOJOTrp7vete7pP3GxkbE43Fn4SY9vm3bNm1dqAy8zm1tbUin046sQ8HHP/5x/OlPf8K2bdvw0EMP4YwzzsA//vEPnHjiicjn80Mqc9q0aZ4FzbvvvjsAeNbJCLz66qsol8v4+te/Lk3MU6ZMwYoVKwC4C4Zfe+21QN+KGQv88pe/xMMPP4y1a9fi1VdfxYsvvoh58+Z5rrvlllvw8MMP47HHHsNLL72E//73v1i0aJFzvr6+Xvmq8hVXXIGHH34YDz/8cOA6TZ06Fbfeeis2bdqEV155Bd/5zncwZcoUXHbZZbj99tu1973xxhuYOnWqx+nS9Z14PI4pU6ZIxyZNmuSx79/+9rc45JBDEI/HMXnyZEyZMgW33nqrb383MBgtmLeK3uGora3FgQceiAMPPBC77747li1bhp///OfORFMJmUwGCxYsQENDA6644grMmTMH8Xgczz77LC688MIxezVT9abGxz72MfzlL3/BV77yFey3335IpVIYHBzEscceq6xnOBwOdAyA71MvxY6MJjQ0NOCYY47BMcccg2g0ih/96Ef461//igULFmh5gyygDgqhwwsuuECawCn8nM3xgiOPPNLjnKpw0EEHOW8VqbDnnnvi+eefx8DAgPS2z3vf+94h1y0UCmH33XfH7rvvjhNOOAG77bYbfvrTn0rRweFAZ98Uf/rTn3DSSSfhyCOPxPe+9z1MnToV0WgUq1evxt133z0i9TAwGA6M4zKBIAbhTZs2AQDmzJmDwcFBvPTSS9rvaKxduxZdXV247777pIWTld7AAKxFh4888gh6enqkqItIL82aNcvZDg4O4vXXX8duu+3mXPfqq68Glm3btm1Ys2YNLr/8clx22WXO8f/85z+ByxgOhAz/+c9/nIgSAHR0dCCTyTiyjhTmz5+PH/3oR05bTpo0CYDlaFLoIj0bN270vEb+73//GwC0X2bdddddAViv5C5cuNC3fnPmzKm4OHysU0bDxYc+9CE8/fTT+NWvfoWPfexjI17+rrvuikmTJjltrMKsWbPw2GOPIZfLSVGXavoOxy9/+UvE43H88Y9/RCwWc46vXr16yGUaGIwkTKroHYjHHntMGSEQ6zD22GMPAMDixYtRU1ODK664whOREPeLJzRaXn9/P773ve9VrMfxxx+PUqmEm2++WTr+7W9/G6FQCMcddxwAOE/vvMxqvvKrqicArFq1KnAZw8Hxxx+v5LvxxhsBwPcNKR1yuRyeeuop5TmxPki05Zw5cwBAevupVCp53hYRKBaL+P73v+/s9/f34/vf/z6mTJmiTJsA1ltORx11FL7//e8rJ9MtW7Y4f5966ql4/vnnpTeNBEQbCaeJO1s7Cz73uc+htbUVX/rSlxynjyJolO6vf/0rent7PcefeeYZdHV1OW2swqJFizAwMIAf/vCHzrHBwUHccsstgbhVCIfDCIVCUrRu/fr1uP/++4dcpoHBSMJEXN6BOP/885HL5XDyySdjzz33RH9/P/7yl7/g3nvvxezZs7Fs2TIAVlj/0ksvxZVXXokjjjgCp5xyCmKxGP72t79h2rRpWLlyJQ477DBMmjQJS5Yswec//3mEQiHcddddgQblE088EUcffTQuvfRSrF+/Hvvuuy8eeughPPDAA/jiF7/oTLbz5s3DqaeeilWrVqGrqwuHHHIIHn/8cWcyCPJk3tDQgCOPPBLXXnstBgYGMH36dDz00EOBIkMjgX333RdLlizBD37wAye99swzz+BHP/oRFi9ejKOPPrrqMnO5HA477DAccsghOPbYYzFz5kxkMhncf//9+NOf/oTFixdj//33BwC85z3vwSGHHIKLL74YW7duxeTJk3HPPfegWCwqy542bRquueYarF+/HrvvvjvuvfdePPfcc/jBD37g+5GzW265BYcffjj22WcfnHXWWdh1113R0dGBp556Chs2bMDzzz8PAPjKV76CX/ziF/joRz+KT33qU5g3bx62bt2KX//617jtttuw7777Ys6cOUin07jttttQX1+Puro6HHzwwcr1SwI333wzMpkMNm7cCMB6JXnDhg0ALLtvbGysWs9DxeTJk/GrX/0KJ554Ivbdd1+cfvrpOPDAAxGNRvHWW2/h5z//OQDvWiqOu+66Cz/96U9x8sknY968eaitrcW//vUv3HHHHYjH47jkkku09y5evBgHHXQQvvzlL+PVV1/FnnvuiV//+tfO6/NDiWqdcMIJuPHGG3HsscfijDPOwObNm3HLLbdg7ty5eOGFF6ouz8BgxDE2LzMZ7Ej84Q9/KH/qU58q77nnnuVUKlWura0tz507t3z++eeXOzo6PNffcccd5f33378ci8XKkyZNKi9YsKD88MMPO+f//Oc/lw855JByIpEoT5s2zXm9Guw1W/6qZrlcLvf09JS/9KUvladNm1aORqPl3XbbrXzddddJr1uXy+Vyb29v+dxzzy1Pnjy5nEqlyosXLy6/8sorZQDS68nildYtW7Z45NiwYUP55JNPLqfT6XJjY2P5ox/9aHnjxo3aV6p5GbrXlBcsWFB+z3veo9Q1xcDAQPnyyy8v77LL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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import pywt\n",
    "\n",
    "# Load subject 1 data\n",
    "subject_1_df = pd.read_csv(r'C:\\\\Users\\\\DELL\\\\Desktop\\\\vocational traning\\\\project 1\\\\subject_1.csv')\n",
    "\n",
    "# Extract the PPG signal\n",
    "signal = subject_1_df['ppg_signal'].values\n",
    "\n",
    "# Perform Continuous Wavelet Transform (CWT)\n",
    "coefficients, frequencies = pywt.cwt(signal, scales=np.arange(1, 128), wavelet='morl')\n",
    "\n",
    "# Plot the scalogram\n",
    "plt.imshow(np.abs(coefficients)**2, cmap='jet', aspect='auto',\n",
    "           extent=[subject_1_df['time'].min(), subject_1_df['time'].max(), frequencies.min(), frequencies.max()])\n",
    "plt.colorbar(label='Power')\n",
    "plt.xlabel('Time (s)')\n",
    "plt.ylabel('Frequency (Hz)')\n",
    "plt.title('Scalogram of Subject 1 PPG Signal')\n",
    "plt.gca().invert_yaxis()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "916499bc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Found files: []\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "0it [00:00, ?it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of X: (0,) Shape of y: (0,)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "ename": "ValueError",
     "evalue": "With n_samples=0, test_size=0.2 and train_size=None, the resulting train set will be empty. Adjust any of the aforementioned parameters.",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[18], line 78\u001b[0m\n\u001b[0;32m     76\u001b[0m \u001b[38;5;66;03m# Normalize and prepare data\u001b[39;00m\n\u001b[0;32m     77\u001b[0m X \u001b[38;5;241m=\u001b[39m X \u001b[38;5;241m/\u001b[39m \u001b[38;5;241m255.0\u001b[39m\n\u001b[1;32m---> 78\u001b[0m X_train, X_test, y_train, y_test \u001b[38;5;241m=\u001b[39m \u001b[43mtrain_test_split\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtest_size\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0.2\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrandom_state\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m42\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[0;32m     85\u001b[0m \u001b[38;5;66;03m# Convert to PyTorch tensors (channel-first format)\u001b[39;00m\n\u001b[0;32m     86\u001b[0m X_train \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mtensor(X_train, dtype\u001b[38;5;241m=\u001b[39mtorch\u001b[38;5;241m.\u001b[39mfloat32)\u001b[38;5;241m.\u001b[39mpermute(\u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m3\u001b[39m, \u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m2\u001b[39m)  \u001b[38;5;66;03m# (N, C, H, W)\u001b[39;00m\n",
      "File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python312\\site-packages\\sklearn\\utils\\_param_validation.py:213\u001b[0m, in \u001b[0;36mvalidate_params.<locals>.decorator.<locals>.wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m    207\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m    208\u001b[0m     \u001b[38;5;28;01mwith\u001b[39;00m config_context(\n\u001b[0;32m    209\u001b[0m         skip_parameter_validation\u001b[38;5;241m=\u001b[39m(\n\u001b[0;32m    210\u001b[0m             prefer_skip_nested_validation \u001b[38;5;129;01mor\u001b[39;00m global_skip_validation\n\u001b[0;32m    211\u001b[0m         )\n\u001b[0;32m    212\u001b[0m     ):\n\u001b[1;32m--> 213\u001b[0m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m    214\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m InvalidParameterError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m    215\u001b[0m     \u001b[38;5;66;03m# When the function is just a wrapper around an estimator, we allow\u001b[39;00m\n\u001b[0;32m    216\u001b[0m     \u001b[38;5;66;03m# the function to delegate validation to the estimator, but we replace\u001b[39;00m\n\u001b[0;32m    217\u001b[0m     \u001b[38;5;66;03m# the name of the estimator by the name of the function in the error\u001b[39;00m\n\u001b[0;32m    218\u001b[0m     \u001b[38;5;66;03m# message to avoid confusion.\u001b[39;00m\n\u001b[0;32m    219\u001b[0m     msg \u001b[38;5;241m=\u001b[39m re\u001b[38;5;241m.\u001b[39msub(\n\u001b[0;32m    220\u001b[0m         \u001b[38;5;124mr\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mparameter of \u001b[39m\u001b[38;5;124m\\\u001b[39m\u001b[38;5;124mw+ must be\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m    221\u001b[0m         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mparameter of \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfunc\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__qualname__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m must be\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m    222\u001b[0m         \u001b[38;5;28mstr\u001b[39m(e),\n\u001b[0;32m    223\u001b[0m     )\n",
      "File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python312\\site-packages\\sklearn\\model_selection\\_split.py:2785\u001b[0m, in \u001b[0;36mtrain_test_split\u001b[1;34m(test_size, train_size, random_state, shuffle, stratify, *arrays)\u001b[0m\n\u001b[0;32m   2782\u001b[0m arrays \u001b[38;5;241m=\u001b[39m indexable(\u001b[38;5;241m*\u001b[39marrays)\n\u001b[0;32m   2784\u001b[0m n_samples \u001b[38;5;241m=\u001b[39m _num_samples(arrays[\u001b[38;5;241m0\u001b[39m])\n\u001b[1;32m-> 2785\u001b[0m n_train, n_test \u001b[38;5;241m=\u001b[39m \u001b[43m_validate_shuffle_split\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m   2786\u001b[0m \u001b[43m    \u001b[49m\u001b[43mn_samples\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtest_size\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtrain_size\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdefault_test_size\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0.25\u001b[39;49m\n\u001b[0;32m   2787\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m   2789\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m shuffle \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mFalse\u001b[39;00m:\n\u001b[0;32m   2790\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m stratify \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n",
      "File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python312\\site-packages\\sklearn\\model_selection\\_split.py:2415\u001b[0m, in \u001b[0;36m_validate_shuffle_split\u001b[1;34m(n_samples, test_size, train_size, default_test_size)\u001b[0m\n\u001b[0;32m   2412\u001b[0m n_train, n_test \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mint\u001b[39m(n_train), \u001b[38;5;28mint\u001b[39m(n_test)\n\u001b[0;32m   2414\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m n_train \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m-> 2415\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[0;32m   2416\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWith n_samples=\u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m, test_size=\u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m and train_size=\u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m, the \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m   2417\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mresulting train set will be empty. Adjust any of the \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m   2418\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124maforementioned parameters.\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(n_samples, test_size, train_size)\n\u001b[0;32m   2419\u001b[0m     )\n\u001b[0;32m   2421\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m n_train, n_test\n",
      "\u001b[1;31mValueError\u001b[0m: With n_samples=0, test_size=0.2 and train_size=None, the resulting train set will be empty. Adjust any of the aforementioned parameters."
     ]
    }
   ],
   "source": [
    "# 📦 Imports\n",
    "import os\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import pywt\n",
    "import cv2\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.optim as optim\n",
    "import torch.nn.functional as F\n",
    "from tqdm import tqdm\n",
    "\n",
    "\n",
    "\n",
    "# 📂 Set folder paths (updated to match your previous project)\n",
    "project_root = \"C:\\\\Users\\\\DELL\\\\Desktop\\\\vocational traning\\\\project 1\\\\\"\n",
    "data_folder = os.path.join(project_root, \"subjects\")  # Assuming CSV files are here\n",
    "scalogram_folder = os.path.join(project_root, \"scalograms\")  # For storing generated scalograms\n",
    "\n",
    "# Create directories if they do not exist\n",
    "os.makedirs(data_folder, exist_ok=True)\n",
    "os.makedirs(scalogram_folder, exist_ok=True)\n",
    "\n",
    "# 📌 Load CSV files\n",
    "file_list = [os.path.join(data_folder, f) for f in os.listdir(data_folder) if f.endswith('.csv')]\n",
    "print(\"Found files:\", file_list)\n",
    "\n",
    "\n",
    "\n",
    "# 📌 Function to generate scalogram image\n",
    "def generate_scalogram(signal, filename, wavelet='morl', scales=np.arange(1, 128)):\n",
    "    coefficients, _ = pywt.cwt(signal, scales, wavelet)\n",
    "    power = np.abs(coefficients)**2\n",
    "    plt.figure(figsize=(6, 4))\n",
    "    plt.imshow(power, extent=[0, len(signal), 1, 128], cmap='jet', aspect='auto', vmax=np.percentile(power, 99))\n",
    "    plt.axis('off')\n",
    "    plt.tight_layout()\n",
    "    plt.savefig(filename, bbox_inches='tight', pad_inches=0)\n",
    "    plt.close()\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# 📌 Generate scalograms and labels\n",
    "X = []\n",
    "y = []\n",
    "\n",
    "for file_path in tqdm(file_list):\n",
    "    df = pd.read_csv(file_path)\n",
    "    signal = df['ppg_signal'].values  # Using 'ppg_signal' column as per your previous code\n",
    "    file_name = os.path.basename(file_path).replace(\".csv\", \".png\")\n",
    "    save_path = os.path.join(scalogram_folder, file_name)\n",
    "\n",
    "    if generate_scalogram(signal[:2000], save_path):  # Use first 2000 samples\n",
    "        img = cv2.imread(save_path)\n",
    "        if img is None:\n",
    "            print(f\"Failed to load image: {save_path}\")\n",
    "        else:\n",
    "            img = cv2.resize(img, (128, 128))\n",
    "            X.append(img)\n",
    "\n",
    "        # Using random labels as placeholder (replace with actual values if available)\n",
    "        dummy_label = np.random.uniform(80, 180)\n",
    "        y.append(dummy_label)\n",
    "X = np.array(X)\n",
    "y = np.array(y)\n",
    "print(\"Shape of X:\", X.shape, \"Shape of y:\", y.shape)\n",
    "\n",
    "# 📌 Normalize images\n",
    "X = X / 255.0\n",
    "\n",
    "# 📌 Split Data\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# Convert to PyTorch tensors (channel-first format)\n",
    "X_train = torch.tensor(X_train, dtype=torch.float32).permute(0, 3, 1, 2)  # (N, C, H, W)\n",
    "X_test = torch.tensor(X_test, dtype=torch.float32).permute(0, 3, 1, 2)\n",
    "y_train = torch.tensor(y_train, dtype=torch.float32).view(-1, 1)\n",
    "y_test = torch.tensor(y_test, dtype=torch.float32).view(-1, 1)\n",
    "\n",
    "# 📌 Define CNN Model\n",
    "class CNNModel(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(CNNModel, self).__init__()\n",
    "        self.conv1 = nn.Conv2d(3, 16, 3, padding=1)  # 3 input channels (RGB)\n",
    "        self.pool = nn.MaxPool2d(2, 2)\n",
    "        self.conv2 = nn.Conv2d(16, 32, 3, padding=1)\n",
    "        self.conv3 = nn.Conv2d(32, 64, 3, padding=1)\n",
    "        self.flatten = nn.Flatten()\n",
    "        self.fc1 = nn.Linear(64 * 16 * 16, 64)  # 128x128 -> 64x64 -> 32x32 -> 16x16 after pooling\n",
    "        self.fc2 = nn.Linear(64, 1)\n",
    "        \n",
    "    def forward(self, x):\n",
    "        x = self.pool(F.relu(self.conv1(x)))\n",
    "        x = self.pool(F.relu(self.conv2(x)))\n",
    "        x = self.pool(F.relu(self.conv3(x)))\n",
    "        x = self.flatten(x)\n",
    "        x = F.relu(self.fc1(x))\n",
    "        x = self.fc2(x)\n",
    "        return x\n",
    "\n",
    "model = CNNModel()\n",
    "criterion = nn.MSELoss()\n",
    "optimizer = optim.Adam(model.parameters(), lr=0.001)\n",
    "\n",
    "# 📌 Training\n",
    "num_epochs = 30\n",
    "batch_size = 8\n",
    "\n",
    "for epoch in range(num_epochs):\n",
    "    model.train()\n",
    "    epoch_loss = 0\n",
    "    for i in range(0, len(X_train), batch_size):\n",
    "        batch_X = X_train[i:i+batch_size]\n",
    "        batch_y = y_train[i:i+batch_size]\n",
    "        \n",
    "        optimizer.zero_grad()\n",
    "        outputs = model(batch_X)\n",
    "        loss = criterion(outputs, batch_y)\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        epoch_loss += loss.item()\n",
    "    \n",
    "    print(f'Epoch {epoch+1}/{num_epochs}, Loss: {epoch_loss/len(X_train):.4f}')\n",
    "\n",
    "# 📌 Evaluation\n",
    "model.eval()\n",
    "with torch.no_grad():\n",
    "    y_pred = model(X_test)\n",
    "    \n",
    "mse = mean_squared_error(y_test, y_pred)\n",
    "rmse = np.sqrt(mse)\n",
    "mae = mean_absolute_error(y_test, y_pred)\n",
    "r2 = r2_score(y_test, y_pred)\n",
    "\n",
    "print(f\"\\nEvaluation Metrics:\")\n",
    "print(f\"MSE: {mse:.4f}\")\n",
    "print(f\"RMSE: {rmse:.4f}\")\n",
    "print(f\"MAE: {mae:.4f}\")\n",
    "print(f\"R²: {r2:.4f}\")\n",
    "\n",
    "# 📌 Plotting\n",
    "plt.figure(figsize=(8, 6))\n",
    "plt.scatter(y_test.numpy(), y_pred.numpy(), alpha=0.6)\n",
    "plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'r--')\n",
    "plt.xlabel('Actual Values')\n",
    "plt.ylabel('Predicted Values')\n",
    "plt.title('Actual vs Predicted Values')\n",
    "plt.grid(True)\n",
    "plt.show()\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
